/*! JRoll v2.6.5 ~ (c) 2015-2018 Author:BarZu Git:https://github.com/chjtx/JRoll Website:http://www.chjtx.com/JRoll/ */ ;
! function (o, r, e) {
    "use strict";

    function l(o) {
        var r = h.findAllJRolls(o.target),
            e = r.length;
        if (!(c.jrollActive && !c.jrollActive.options.zoom && o.touches && o.touches.length > 1))
            if (e) {
                for (; e--;) r[e].moving && (o.preventDefault(), r[e]._endAction());
                c.jrollActive = r[0], c.jrollActive._start(o)
            } else c.jrollActive && c.jrollActive._end(o)
    }

    function t(o) {
        if (c.jrollActive) {
            var e = r.activeElement;
            c.jrollActive.options.preventDefault && o.preventDefault(), h.isMobile && c.jrollActive.options.autoBlur && ("INPUT" === e.tagName || "TEXTAREA" === e.tagName) && e.blur(), c.jrollActive._move(o)
        }
    }

    function s(o) {
        c.jrollActive && c.jrollActive._end(o)
    }

    function n() {
        setTimeout(function () {
            for (var o in m) m[o].refresh().scrollTo(m[o].x, m[o].y, 200)
        }, 600)
    }

    function i(o) {
        var r = h.findScroller(o.target);
        r && r._wheel(o)
    }

    function a(o, e) {
        r.addEventListener(o, e, !!v && {
            passive: !1
        })
    }
    var c, p = "2.6.5",
        u = o.requestAnimationFrame || o.webkitRequestAnimationFrame || function (o) {
            setTimeout(o, 17)
        },
        d = r.createElement("div").style,
        m = {},
        f = navigator.userAgent.toLowerCase(),
        _ = function () {
            for (var o, r = ["OT", "msT", "MozT", "webkitT", "t"], e = r.length; e--;)
                if (o = r[e] + "ransform", o in d) return r[e]
        }(),
        h = {
            TSF: _ + "ransform",
            TSD: _ + "ransitionDuration",
            TFO: _ + "ransformOrigin",
            isAndroid: /android/.test(f),
            isIOS: /iphone|ipad/.test(f),
            isMobile: /mobile|phone|android|pad/.test(f),
            translateZ: function (o) {
                var r;
                return r = o ? o + "Perspective" in d : "perspective" in d, r ? " translateZ(0px)" : ""
            }(_.substr(0, _.length - 1)),
            computeTranslate: function (r, e) {
                for (var l, t = 0, s = 0; r;) l = o.getComputedStyle(r)[h.TSF].replace(/matrix\(|\)/g, "").split(", "), t += parseInt(l[4]) || 0, s += parseInt(l[5]) || 0, r = r.parentElement, r === e && (r = null);
                return {
                    x: t,
                    y: s
                }
            },
            computePosition: function (o, r) {
                for (var e = 0, l = 0; o;) e += o.offsetLeft, l += o.offsetTop, o = o.offsetParent, o === r && (o = null);
                return {
                    left: e,
                    top: l
                }
            },
            moveTo: function (o, r, e, l, t, s) {
                function n() {
                    d -= 17, d < 17 ? (i = r, a = e) : (i = parseInt(i + c, 10), a = parseInt(a + p, 10)), o.style[h.TSF] = "translate(" + i + "px, " + a + "px)" + h.translateZ + " scale(" + v + ")", s && (s.x = i, s.y = a, s._execEvent("scroll"), s.scrollBtnX && s._runScrollBarX(), s.scrollBtnY && s._runScrollBarY()), d > 0 && (i !== r || a !== e) ? u(n) : "function" == typeof t && t()
                }
                var i, a, c, p, d, m, f = 0,
                    _ = 0,
                    v = 1;
                m = /translate\(([-\d.]+)px,\s+([-\d.]+)px\)\s+(?:translateZ\(0px\)\s+)?scale\(([\d.]+)\)/.exec(o.style[h.TSF]), m && (f = Number(m[1]), _ = Number(m[2]), v = Number(m[3])), d = l || 17, c = (r - f) / (d / 17), p = (e - _) / (d / 17), i = f, a = _, n()
            },
            findScroller: function (o, e) {
                var l;
                if (e || !("TEXTAREA" === o.tagName && o.scrollHeight > o.offsetHeight))
                    for (; o !== r;) {
                        if (l = o.getAttribute("jroll-id")) return m[l];
                        o = o.parentNode
                    }
                return null
            },
            findAllJRolls: function (o, e) {
                var l, t = [];
                if (e || !("TEXTAREA" === o.tagName && o.scrollHeight > o.clientHeight && o.scrollTop > 0 && o.scrollTop < o.scrollHeight - o.clientHeight))
                    for (; o !== r;) l = o.getAttribute("jroll-id"), l && t.push(m[l]), o = o.parentNode;
                return t
            }
        },
        v = !1;
    try {
        var x = Object.defineProperty({}, "passive", {
            get: function () {
                v = !0
            }
        });
        o.addEventListener("test", null, x)
    } catch (g) {}
    a(h.isMobile ? "touchstart" : "mousedown", l), a(h.isMobile ? "touchmove" : "mousemove", t), a(h.isMobile ? "touchend" : "mouseup", s), h.isMobile ? a("touchcancel", s) : a(/firefox/.test(f) ? "DOMMouseScroll" : "mousewheel", i), o.addEventListener("resize", n), o.addEventListener("orientationchange", n), c = function (o, e) {
        var l = this;
        return l.fading = !0, l.wrapper = "string" == typeof o ? r.querySelector(o) : o, l.scroller = e && e.scroller ? "string" == typeof e.scroller ? r.querySelector(e.scroller) : e.scroller : l.wrapper.children[0], l.scroller.jroll ? (l.scroller.jroll.refresh(), l.scroller.jroll) : (l.scroller.jroll = l, void this._init(o, e))
    }, c.version = p, c.utils = h, c.jrollMap = m, c.prototype = {
        _init: function (l, t) {
            var s = this;
            s.wrapperOffset = h.computePosition(s.wrapper, r.body), s.id = t && t.id || s.scroller.getAttribute("jroll-id") || "jroll_" + e.random().toString().substr(2, 8), s.scroller.setAttribute("jroll-id", s.id), m[s.id] = s, s.options = {
                scrollX: !1,
                scrollY: !0,
                scrollFree: !1,
                minX: null,
                maxX: null,
                minY: null,
                maxY: null,
                zoom: !1,
                zoomMin: 1,
                zoomMax: 4,
                zoomDuration: 400,
                bounce: !0,
                scrollBarX: !1,
                scrollBarY: !1,
                scrollBarFade: !1,
                preventDefault: !0,
                momentum: !0,
                autoStyle: !0,
                autoBlur: !0,
                edgeRelease: !0
            };
            for (var n in t) "scroller" !== n && (s.options[n] = t[n]);
            s.options.autoStyle && ("static" === o.getComputedStyle(s.wrapper).position && (s.wrapper.style.position = "relative", s.wrapper.style.top = "0", s.wrapper.style.left = "0"), s.wrapper.style.overflow = "hidden", s.scroller.style.minHeight = "100%"), s.options.zoom && (s.scroller.style.touchAction = "none"), s.x = 0, s.y = 0, s.s = null, s.scrollBarX = null, s.scrollBarY = null, s._s = {
                startX: 0,
                startY: 0,
                lastX: 0,
                lastY: 0,
                endX: 0,
                endY: 0
            }, s._z = {
                spacing: 0,
                scale: 1,
                startScale: 1
            }, s._event = {
                scrollStart: [],
                scroll: [],
                scrollEnd: [],
                zoomStart: [],
                zoom: [],
                zoomEnd: [],
                refresh: [],
                touchEnd: []
            }, s.refresh(!0)
        },
        enable: function () {
            var o = this;
            return o.scroller.setAttribute("jroll-id", o.id), o
        },
        disable: function () {
            var o = this;
            return o.scroller.removeAttribute("jroll-id"), o
        },
        destroy: function () {
            var o = this;
            delete m[o.id], delete o.scroller.jroll, o.scrollBarX && o.wrapper.removeChild(o.scrollBarX), o.scrollBarY && o.wrapper.removeChild(o.scrollBarY), o.disable(), o.scroller.style[h.TSF] = "", o.scroller.style[h.TSD] = "", o.scroller.style[h.TFO] = "", o.prototype = null;
            for (var r in o) o.hasOwnProperty(r) && delete o[r]
        },
        call: function (o, r) {
            var e = this;
            return e.scrollTo(e.x, e.y), c.jrollActive = o, r && o._start(r), o
        },
        refresh: function (r) {
            var l, t, s, n, i, a, c = this,
                p = o.getComputedStyle(c.wrapper),
                u = o.getComputedStyle(c.scroller);
            return c.wrapperWidth = c.wrapper.clientWidth, c.wrapperHeight = c.wrapper.clientHeight, c.scrollerWidth = e.round(c.scroller.offsetWidth * c._z.scale), c.scrollerHeight = e.round(c.scroller.offsetHeight * c._z.scale), l = parseInt(p.paddingLeft) + parseInt(p.paddingRight), t = parseInt(p.paddingTop) + parseInt(p.paddingBottom), s = parseInt(u.marginLeft) + parseInt(u.marginRight), n = parseInt(u.marginTop) + parseInt(u.marginBottom), isNaN(l) || isNaN(t) || isNaN(s) || isNaN(n) ? c : (c.minScrollX = null === c.options.minX ? 0 : c.options.minX, c.maxScrollX = null === c.options.maxX ? c.wrapperWidth - c.scrollerWidth - l - s : c.options.maxX, c.minScrollY = null === c.options.minY ? 0 : c.options.minY, c.maxScrollY = null === c.options.maxY ? c.wrapperHeight - c.scrollerHeight - t - n : c.options.maxY, c.minScrollX < 0 && (c.minScrollX = 0), c.minScrollY < 0 && (c.minScrollY = 0), c.maxScrollX > 0 && (c.maxScrollX = 0), c.maxScrollY > 0 && (c.maxScrollY = 0), c._s.endX = c.x, c._s.endY = c.y, c.options.scrollBarX && c.wrapperWidth + c.maxScrollX < 0 ? (c.scrollBarX || (i = c._createScrollBar("jroll-xbar", "jroll-xbtn", !1), c.scrollBarX = i[0], c.scrollBtnX = i[1]), c.scrollBarScaleX = c.wrapper.clientWidth / c.scrollerWidth, a = e.round(c.scrollBarX.clientWidth * c.scrollBarScaleX), c.scrollBtnX.style.width = (a > 8 ? a : 8) + "px", c._runScrollBarX()) : c.scrollBarX && (c.wrapper.removeChild(c.scrollBarX), c.scrollBarX = null), c.options.scrollBarY && c.wrapperHeight + c.maxScrollY < 0 ? (c.scrollBarY || (i = c._createScrollBar("jroll-ybar", "jroll-ybtn", !0), c.scrollBarY = i[0], c.scrollBtnY = i[1]), c.scrollBarScaleY = c.wrapper.clientHeight / c.scrollerHeight, a = e.round(c.scrollBarY.clientHeight * c.scrollBarScaleY), c.scrollBtnY.style.height = (a > 8 ? a : 8) + "px", c._runScrollBarY()) : c.scrollBarY && (c.wrapper.removeChild(c.scrollBarY), c.scrollBarY = null), r || c._execEvent("refresh"), c)
        },
        scale: function (o) {
            var r = this,
                e = parseFloat(o);
            return isNaN(e) || (r.scroller.style[h.TFO] = "0 0", r._z.scale = e, r.refresh()._scrollTo(r.x, r.y), r.scrollTo(r.x, r.y, 400)), r
        },
        _wheel: function (o) {
            var r = this,
                e = o.wheelDelta || 120 * -(o.detail / 3);
            (r.options.scrollY || r.options.scrollFree) && r.scrollTo(r.x, r._compute(r.y + e, r.minScrollY, r.maxScrollY))
        },
        _runScrollBarX: function () {
            var o = this,
                r = e.round(-1 * o.x * o.scrollBarScaleX);
            o._scrollTo.call({
                scroller: o.scrollBtnX,
                _z: {
                    scale: 1
                }
            }, r, 0)
        },
        _runScrollBarY: function () {
            var o = this,
                r = e.round(-1 * o.y * o.scrollBarScaleY);
            o._scrollTo.call({
                scroller: o.scrollBtnY,
                _z: {
                    scale: 1
                }
            }, 0, r)
        },
        _createScrollBar: function (o, e, l) {
            var t, s, n = this;
            return t = r.createElement("div"), s = r.createElement("div"), t.className = o, s.className = e, this.options.scrollBarX !== !0 && this.options.scrollBarY !== !0 || (l ? (t.style.cssText = "position:absolute;top:2px;right:2px;bottom:2px;width:6px;overflow:hidden;border-radius:2px;-webkit-transform: scaleX(.5);transform: scaleX(.5);", s.style.cssText = "background:rgba(0,0,0,.4);position:absolute;top:0;left:0;right:0;border-radius:2px;") : (t.style.cssText = "position:absolute;left:2px;bottom:2px;right:2px;height:6px;overflow:hidden;border-radius:2px;-webkit-transform: scaleY(.5);transform: scaleY(.5);", s.style.cssText = "background:rgba(0,0,0,.4);height:100%;position:absolute;left:0;top:0;bottom:0;border-radius:2px;")), n.options.scrollBarFade && (t.style.opacity = 0), t.appendChild(s), n.wrapper.appendChild(t), [t, s]
        },
        _fade: function (o, r) {
            var e = this;
            e.fading && r > 0 && (r -= 25, r % 100 === 0 && (o.style.opacity = r / 1e3), u(e._fade.bind(e, o, r)))
        },
        on: function (o, r) {
            var e = this;
            switch (o) {
                case "scrollStart":
                    e._event.scrollStart.push(r);
                    break;
                case "scroll":
                    e._event.scroll.push(r);
                    break;
                case "scrollEnd":
                    e._event.scrollEnd.push(r);
                    break;
                case "zoomStart":
                    e._event.zoomStart.push(r);
                    break;
                case "zoom":
                    e._event.zoom.push(r);
                    break;
                case "zoomEnd":
                    e._event.zoomEnd.push(r);
                    break;
                case "refresh":
                    e._event.refresh.push(r);
                    break;
                case "touchEnd":
                    e._event.touchEnd.push(r)
            }
            return e
        },
        _execEvent: function (o, r) {
            for (var e = this, l = e._event[o].length - 1; l >= 0; l--) e._event[o][l].call(e, r)
        },
        _compute: function (o, r, l) {
            var t = this;
            return o > r ? t.options.bounce && o > r + 10 ? e.round(r + (o - r) / 4) : r : o < l ? t.options.bounce && o < l - 10 ? e.round(l + (o - l) / 4) : l : o
        },
        _scrollTo: function (o, r) {
            this.scroller.style[h.TSF] = "translate(" + o + "px, " + r + "px)" + h.translateZ + " scale(" + this._z.scale + ")"
        },
        scrollTo: function (o, r, e, l, t, s, n) {
            var i = this;
            return l ? (i.x = o, i.y = r) : (o >= i.minScrollX ? (i.x = i.minScrollX, n && (i._s.startX = n[0].pageX, i._s.endX = i.minScrollX)) : o <= i.maxScrollX ? (i.x = i.maxScrollX, n && (i._s.startX = n[0].pageX, i._s.endX = i.maxScrollX)) : i.x = o, r >= i.minScrollY ? (i.y = i.minScrollY, n && (i._s.startY = n[0].pageY, i._s.endY = i.minScrollY)) : r <= i.maxScrollY ? (i.y = i.maxScrollY, n && (i._s.startY = n[0].pageY, i._s.endY = i.maxScrollY)) : i.y = r), s || (i._s.endX = i.x, i._s.endY = i.y), e ? h.moveTo(i.scroller, i.x, i.y, e, t, s ? i : null) : (i._scrollTo(i.x, i.y), s && i._execEvent("scroll", n && n[0]), "function" == typeof t && t()), i.scrollBtnX && i._runScrollBarX(), i.scrollBtnY && i._runScrollBarY(), i
        },
        scrollToElement: function (o, r, e, l) {
            var t = this,
                s = "string" == typeof o ? t.scroller.querySelector(o) : o;
            if (s instanceof HTMLElement) {
                var n = h.computePosition(s, t.scroller),
                    i = h.computeTranslate(s, t.scroller),
                    a = -(n.left + i.x),
                    c = -(n.top + i.y);
                return t.scrollTo(a, c, r, e, l)
            }
        },
        _endAction: function () {
            var o = this;
            o._s.endX = o.x, o._s.endY = o.y, o.moving = !1, o.options.scrollBarFade && !o.fading && (o.fading = !0, o.scrollBarX && o._fade(o.scrollBarX, 2e3), o.scrollBarY && o._fade(o.scrollBarY, 2e3)), o._execEvent("scrollEnd")
        },
        _stepBounce: function (o, r) {
            var l = this,
                t = Date.now(),
                s = t - o,
                n = 0;
            if (s > 0) {
                if (l.speed = l.speed - .008 * s, n = e.round(l.speed * s * r * .005), l.speed <= 0 || n <= 0 || isNaN(n)) return l.bouncing = !1, void l.scrollTo(l.x, l.y, 200, !1, function () {
                    l._endAction()
                }, !0);
                "scrollY" !== l.s && "scrollFree" !== l.s || (l.y = l.y + n * l.directionY), "scrollX" !== l.s && "scrollFree" !== l.s || (l.x = l.x + n * l.directionX), l.scrollTo(l.x, l.y, 0, !0, null, !0), u(l._stepBounce.bind(l, t, r - 1))
            }
        },
        _x: function (o) {
            var r = this,
                e = r.directionX * o;
            isNaN(e) || (r.x = r.x + e, (r.x >= r.minScrollX || r.x <= r.maxScrollX) && (r.options.bounce ? r.bouncing = !0 : r.moving = !1))
        },
        _y: function (o) {
            var r = this,
                e = r.directionY * o;
            isNaN(e) || (r.y = r.y + e, (r.y >= r.minScrollY || r.y <= r.maxScrollY) && (r.options.bounce ? r.bouncing = !0 : r.moving = !1))
        },
        _xy: function (o) {
            var r = this,
                l = e.round(r.cosX * o),
                t = e.round(r.cosY * o);
            isNaN(l) || isNaN(t) || (r.x = r.x + l, r.y = r.y + t, (r.x >= r.minScrollX || r.x <= r.maxScrollX) && (r.y >= r.minScrollY || r.y <= r.maxScrollY) && (r.moving = !1))
        },
        _step: function (o) {
            var r = this,
                l = Date.now(),
                t = l - o,
                s = 0;
            if (r.id) {
                if (r.bouncing) return void u(r._stepBounce.bind(r, o, 20));
                if (!r.moving) return void r._endAction();
                if (t > 0) {
                    if (r.speed = r.speed - t * (r.speed > 1.2 ? .001 : r.speed > .6 ? 8e-4 : 6e-4), s = e.round(r.speed * t), r.speed <= 0 || s <= 0) return void r._endAction();
                    o = l, r._do(s), r.scrollTo(r.x, r.y, 0, r.options.bounce && !r.options.scrollFree, null, !0)
                }
                u(r._step.bind(r, o))
            }
        },
        _doScroll: function (r, e) {
            var l, t = this;
            t.distance = r, t.options.bounce && (t.x = t._compute(t.x, t.minScrollX, t.maxScrollX), t.y = t._compute(t.y, t.minScrollY, t.maxScrollY)), t.scrollTo(t.x, t.y, 0, t.options.bounce, null, !0, e.touches || [e]), t.options.scrollBarFade && (t.fading = !1, t.scrollBarX && (t.scrollBarX.style.opacity = 1), t.scrollBarY && (t.scrollBarY.style.opacity = 1)), e && e.touches && t.options.edgeRelease && (l = e.touches[0].pageY, (l <= 10 || l >= o.innerHeight - 10) && t._end(e))
        },
        _yTextarea: function (o) {
            var r = this,
                e = o.target;
            return !("TEXTAREA" === e.tagName && e.scrollHeight > e.clientHeight && (0 === e.scrollTop && r.directionY === -1 || e.scrollTop === e.scrollHeight - e.clientHeight && 1 === r.directionY)) || (r._end(o, !0), !1)
        },
        _start: function (o) {
            var l = this,
                t = o.touches || [o];
            if (l.options.zoom && t.length > 1) {
                l.s = "preZoom", l.scroller.style[h.TFO] = "0 0";
                var s = e.abs(t[0].pageX - t[1].pageX),
                    n = e.abs(t[0].pageY - t[1].pageY);
                return l._z.spacing = e.sqrt(s * s + n * n), l._z.startScale = l._z.scale, l.originX = (t[0].pageX - t[1].pageX) / 2 + t[1].pageX - (h.computePosition(l.scroller, r.body).left + h.computeTranslate(l.scroller, r.body).x), l.originY = (t[0].pageY - t[1].pageY) / 2 + t[1].pageY - (h.computePosition(l.scroller, r.body).top + h.computeTranslate(l.scroller, r.body).y), void l._execEvent("zoomStart", o)
            }
            if (l.options.scrollFree) l._do = l._xy, l.s = "scrollFree";
            else if (l.options.scrollX && l.options.scrollY) l.s = "preScroll";
            else if (!l.options.scrollX && l.options.scrollY) l._do = l._y, l.s = "scrollY";
            else {
                if (!l.options.scrollX || l.options.scrollY) return void(l.s = null);
                l._do = l._x, l.s = "scrollX"
            }
            l.distance = 0, l.lastMoveTime = l.startTime = Date.now(), l._s.lastX = l.startPositionX = l._s.startX = t[0].pageX, l._s.lastY = l.startPositionY = l._s.startY = t[0].pageY, l._execEvent("scrollStart", o)
        },
        _move: function (o) {
            var r, l, t, s, n, i, a, c, p = this,
                u = o.touches || [o],
                d = 1,
                m = 1;
            if ("preScroll" !== p.s && "scrollX" !== p.s && "scrollFree" !== p.s || (l = u[0].pageX), "preScroll" !== p.s && "scrollY" !== p.s && "scrollFree" !== p.s || (t = u[0].pageY), s = l - p._s.lastX, n = t - p._s.lastY, p._s.lastX = l, p._s.lastY = t, d = s >= 0 ? 1 : -1, m = n >= 0 ? 1 : -1, r = Date.now(), (r - p.lastMoveTime > 200 || p.directionX !== d || p.directionY !== m) && (p.startTime = r, p.startPositionX = l, p.startPositionY = t, p.directionX = d, p.directionY = m), p.lastMoveTime = r, i = l - p.startPositionX, a = t - p.startPositionY, "preScroll" === p.s) {
                if (e.abs(t - p._s.startY) >= e.abs(l - p._s.startX)) return p._do = p._y, void(p.s = "scrollY");
                if (e.abs(t - p._s.startY) < e.abs(l - p._s.startX)) return p._do = p._x, void(p.s = "scrollX")
            }
            if ("scrollY" === p.s) return p.y = t - p._s.startY + p._s.endY, void(p._yTextarea(o) && p._doScroll(a, o));
            if ("scrollX" === p.s) return p.x = l - p._s.startX + p._s.endX, void p._doScroll(i, o);
            if ("scrollFree" === p.s) return p.x = l - p._s.startX + p._s.endX, p.y = t - p._s.startY + p._s.endY, c = e.sqrt(i * i + a * a), p.cosX = i / c, p.cosY = a / c, void p._doScroll(e.sqrt(i * i + a * a), o);
            if ("preZoom" === p.s) {
                var f, _ = e.abs(u[0].pageX - u[1].pageX),
                    h = e.abs(u[0].pageY - u[1].pageY),
                    v = e.sqrt(_ * _ + h * h),
                    x = v / p._z.spacing * p._z.startScale;
                return x < p.options.zoomMin ? x = p.options.zoomMin : x > p.options.zoomMax && (x = p.options.zoomMax), f = x / p._z.startScale, p.x = e.round(p.originX - p.originX * f + p._s.endX), p.y = e.round(p.originY - p.originY * f + p._s.endY), p._z.scale = x, p._scrollTo(p.x, p.y), void p._execEvent("zoom", o)
            }
        },
        _end: function (o, r) {
            var l, t, s = this,
                n = Date.now(),
                i = "scrollY" === s.s,
                a = "scrollX" === s.s,
                p = "scrollFree" === s.s;
            if (i || a || p) {
                if (o.touches && o.touches.length && !r) return;
                return s._execEvent("touchEnd"), c.jrollActive = null, s.duration = n - s.startTime, l = s.y > s.minScrollY || s.y < s.maxScrollY, t = s.x > s.minScrollX || s.x < s.maxScrollX, void(i && l || a && t || p && (l || t) ? s.scrollTo(s.x, s.y, 300)._endAction() : s.options.momentum && s.duration < 200 && s.distance ? (s.speed = e.abs(s.distance / s.duration), s.speed = s.speed > 2 ? 2 : s.speed, s.moving = !0, u(s._step.bind(s, n))) : s._endAction())
            }
            if ("preZoom" === s.s) return s._execEvent("touchEnd"), c.jrollActive = null, s._z.scale > s.options.zoomMax ? s._z.scale = s.options.zoomMax : s._z.scale < s.options.zoomMin && (s._z.scale = s.options.zoomMin), s.refresh(), s.scrollTo(s.x, s.y, s.options.zoomDuration), void s._execEvent("zoomEnd")
        }
    }, "undefined" != typeof module && module.exports && (module.exports = c), "function" == typeof define && define(function () {
        return c
    }), o.JRoll = c
}(window, document, Math);